package xyz.dagoose.contacts;
/**
 * 
 * @Description 
 * @author Dagoose
 * @version
 * @date 2021年8月12日下午4:02:06
 *
 */

/*
 * 一维数组的使用
 * 1 一维数组的声明和初始化
 * 2 调用数组的指定位置的元素
 * 3 如何获取数组长度
 * 4 如何遍历数组
 * 5 数组元素的默认初始化
 *   > 数组元素是整型 ：0 (byte,short,int,long)
 *   > 数组元素是整型 ：0.0 (float,double)
 *   > 数组元素是char型 ：0 或 '\u0000' 而非‘0’
 *   > 数组元素是boolean型 ：false 
 *   
 *   > 数组元素是引用数据类型
 * 6 数组的内存解析
 * */
public class ArrayTest {
	
	public static void main(String[] args) {
		 
		// 1  一维数组的声明和初始化
		int[] ids; // 声明
		// 1.1 静态初始化 数组的初始化和数组元素的赋值操作同时进行
		ids = new int[]{1001,1002,1003,1004};
		// 1.2 动态初始化 数组的初始化和数组元素的赋值操作分开进行
		String[] names = new String[5]; 
		
		// 错误写法
//		int[] arr1 = new int[];
//		int[5] arr2 = new int[5];
//		int[] arr3 = new int[3]{1,2,3};
//		ids = {1001,1002,1003,1004};
		
		// access syntax
		int Arr1[] = new int[2];
		int Arr2[] = {1001,1002,1003,1004};
//		Arr1[0] = new int[2];
		
		// 总结 数组一旦初始化完成，其长度就确定了
		
		// 2 调用数组的指定位置的元素: 通过角标的方式调用
		// 数组的角标从0开始，到数组的长度-1结束
		names[0] = "a";
		names[1] = "b";
		names[2] = "c";
		names[3] = "d";
		names[4] = "e";
		names[4].charAt(0);
		
		// 3 如何获取数组长度
		// 属性length
		System.out.println(names);
		System.out.println(names.length);
		System.out.println(ids.length);
		
		// 4 如何遍历数组
/*		System.out.println(names[0]);
		System.out.println(names[1]);
		System.out.println(names[2]);
		System.out.println(names[3]);
		System.out.println(names[4]);*/
		for(int i = 0;i < names.length;++i){
			System.out.println(names[i]);
		}
		
		// 5 数组元素的默认初始化
		System.out.println("*********\nint类型\n*********");
		int[] arr = new int[4];
		for(int i = 0;i < arr.length;++i){
			System.out.println(arr[i]);
		}
		System.out.println("*********\nshort类型\n*********");
		short[] arr1 = new short[4];
		for(int i = 0;i < arr1.length;++i){
			System.out.println(arr1[i]);
		}
		System.out.println("*********\ndouble类型\n *********");
		double[] arr2 = new double[4];
		for(int i = 0;i < arr2.length;++i){
			System.out.println(arr2[i]);
		}
		System.out.println("*********\nchar类型\n*********");
		char[] arr3 = new char[4];
		for(int i = 0;i < arr2.length;++i){
			System.out.println(arr3[0]);
		}
		if (arr3[0] != '0') System.out.println("确实不是'0'");
		System.out.println("*********\nboolean类型\n*********");
		boolean[] arr4 = new boolean[4];
		System.out.println(arr4[0]);
		
		System.out.println("*********\nString类型\n*********");
		String[] arr5 = new String[4];
		System.out.println(arr5[0]);
		if (arr5[0] == null) System.out.println("是null");
				
		
		// 6 数组的内存解析
	}
}
